home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / UTILITY / PROFILER / TALER.TST < prev    next >
Encoding:
Text File  |  1989-06-16  |  11.4 KB  |  236 lines

  1.     { Profiler-Testversion zu A:\DEMOS.PAS\TALER.PAS }  
  2.  
  3. CONST ___ = 79;
  4.    ___2 =5;
  5. VAR __ : INTEGER ;
  6. VAR _ : ARRAY [1..___] OF REAL ;
  7. VAR _2 : ARRAY [1..___2] OF REAL ;
  8. VAR _h : STRING; 
  9. VAR _f : TEXT;
  10. { 7. Bundeswettbewerb Informatik 1988/1989 } 
  11. { 1. Runde, Aufgabe 3 ; Autor M. Berger    }
  12. {     Bitte Hinweise am Ende beachten !    }
  13. CONST MAX_ANZAHL_GOLDSTUECKE=100;
  14. MAX_ANZAHL_ERBEN=10;
  15. TYPE GELDKISTE=ARRAY[1..MAX_ANZAHL_GOLDSTUECKE]OF 
  16. INTEGER;
  17. VAR GOLDSTUECKE:GELDKISTE;
  18. ANZAHL_GOLDSTUECKE:INTEGER;
  19. ANZAHL_ERBEN:INTEGER;
  20. PROCEDURE EINGABE;
  21. BEGIN _[8] := _[8] + 1 ;  _2[1] := _2[1] + 1 ;  
  22. CLRSCR  ; WRITELN('Erbteilung  (bwINF 7 [88/89];Aufgabe 2)') ; WRITELN  ; 
  23. WRITELN  ; WRITE('  Bitte Anzahl Erben(Erbinnen) eingeben : ') ; 
  24. REPEAT _[10] := _[10] + 1 ;  
  25. READLN(ANZAHL_ERBEN);   _[5]:=_[5]+1; 
  26.  IF ANZAHL_ERBEN<_[6] THEN _[6]:=ANZAHL_ERBEN; 
  27.  IF ANZAHL_ERBEN>_[7] THEN _[7]:=ANZAHL_ERBEN;  ; 
  28.  UNTIL ANZAHL_ERBEN<MAX_ANZAHL_ERBEN;   _[5]:=_[5]+1; 
  29.  IF ANZAHL_ERBEN<_[6] THEN _[6]:=ANZAHL_ERBEN; 
  30.  IF ANZAHL_ERBEN>_[7] THEN _[7]:=ANZAHL_ERBEN;  ; 
  31. WRITELN  ; WRITELN('  Bitte Werte der Münzen eingeben (Ende mit <RETURN>)') ; 
  32. ANZAHL_GOLDSTUECKE:=0;   _[2]:=_[2]+1; 
  33.  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  34.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;  ; 
  35. REPEAT _[11] := _[11] + 1 ; 
  36. ANZAHL_GOLDSTUECKE:=ANZAHL_GOLDSTUECKE+1;   _[2]:=_[2]+1; 
  37.  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  38.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;  ; 
  39. WRITE('     ->') ;
  40. READLN(GOLDSTUECKE[ANZAHL_GOLDSTUECKE]);   _[2]:=_[2]+1; 
  41.  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  42.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;    _[1]:=_[1]+1;  ; 
  43.  UNTIL(GOLDSTUECKE[ANZAHL_GOLDSTUECKE]=0)OR 
  44. (ANZAHL_GOLDSTUECKE>MAX_ANZAHL_GOLDSTUECKE);   _[2]:=_[2]+1; 
  45.  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  46.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;    _[1]:=_[1]+1;  ; 
  47. ANZAHL_GOLDSTUECKE:=ANZAHL_GOLDSTUECKE-1;   _[2]:=_[2]+1; 
  48.  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  49.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;  ; 
  50. WRITELN  ; WRITELN  ; CLRSCR  ;
  51.  ;IF _2[1] > _[9] THEN _[9] := _2[1]; _2[1]:=_2[1]-1; END ;
  52. PROCEDURE AUFTEILUNG;
  53. VAR I,U:INTEGER;
  54. JEDER_ERBT:INTEGER;
  55. AKT_ERBE:INTEGER;
  56. ERGEBNISS_GEFUNDEN:BOOLEAN;
  57. HILFSARRAY:GELDKISTE;
  58. FUNCTION ERMITTLE_DURCHSCHNITTL_ERBE:REAL;
  59. VAR I:INTEGER;
  60. HILFSUMME:REAL;
  61. BEGIN _[28] := _[28] + 1 ;  _2[2] := _2[2] + 1 ; 
  62. HILFSUMME:=0;   _[33]:=_[33]+1;  IF HILFSUMME<_[34] THEN _[34]:=HILFSUMME; 
  63.  IF HILFSUMME>_[35] THEN _[35]:=HILFSUMME;  ; 
  64. FOR I:=1 TO ANZAHL_GOLDSTUECKE DO BEGIN _[36] := _[36] + 1 ;  
  65. HILFSUMME:=HILFSUMME+GOLDSTUECKE[I];   _[30]:=_[30]+1; 
  66.  IF I<_[31] THEN _[31]:=I;  IF I>_[32] THEN _[32]:=I;    _[1]:=_[1]+1; 
  67.    _[33]:=_[33]+1;  IF HILFSUMME<_[34] THEN _[34]:=HILFSUMME; 
  68.  IF HILFSUMME>_[35] THEN _[35]:=HILFSUMME;  ; 
  69.  END;   _[2]:=_[2]+1; 
  70.  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  71.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;    _[30]:=_[30]+1; 
  72.  IF I<_[31] THEN _[31]:=I;  IF I>_[32] THEN _[32]:=I; ; 
  73. HILFSUMME:=HILFSUMME/ANZAHL_ERBEN;   _[5]:=_[5]+1; 
  74.  IF ANZAHL_ERBEN<_[6] THEN _[6]:=ANZAHL_ERBEN; 
  75.  IF ANZAHL_ERBEN>_[7] THEN _[7]:=ANZAHL_ERBEN;    _[33]:=_[33]+1; 
  76.  IF HILFSUMME<_[34] THEN _[34]:=HILFSUMME; 
  77.  IF HILFSUMME>_[35] THEN _[35]:=HILFSUMME;  ; 
  78. ERMITTLE_DURCHSCHNITTL_ERBE:=HILFSUMME;   _[33]:=_[33]+1; 
  79.  IF HILFSUMME<_[34] THEN _[34]:=HILFSUMME; 
  80.  IF HILFSUMME>_[35] THEN _[35]:=HILFSUMME;  ; 
  81.  ;IF _2[2] > _[29] THEN _[29] := _2[2]; _2[2]:=_2[2]-1; END ;
  82. PROCEDURE TESTE(UEBRIGE:GELDKISTE;
  83. GENOMMENE:GELDKISTE;
  84. ANZ_GENOMM:INTEGER;
  85. SUMME:INTEGER;
  86. STELLE:INTEGER);
  87. VAR I:INTEGER;
  88. ZAHL:INTEGER;
  89. PROCEDURE AUSGABE;
  90. VAR I,U:INTEGER;
  91. BEGIN _[56] := _[56] + 1 ;  _2[3] := _2[3] + 1 ;  
  92. WRITELN('Es erbt Erbe Nr. ',AKT_ERBE,' die Münzen :  ');   _[23]:=_[23]+1; 
  93.  IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE; 
  94.  IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE;  ; 
  95. WRITE('  ') ;
  96. FOR I:=1 TO ANZ_GENOMM DO BEGIN _[64] := _[64] + 1 ;  
  97. IF I>1 THEN BEGIN _[65] := _[65] + 1 ;  WRITE(',') END  ; 
  98. WRITE(GENOMMENE[I]);   _[40]:=_[40]+1;    _[58]:=_[58]+1; 
  99.  IF I<_[59] THEN _[59]:=I;  IF I>_[60] THEN _[60]:=I;  ; 
  100.  END;   _[41]:=_[41]+1;  IF ANZ_GENOMM<_[42] THEN _[42]:=ANZ_GENOMM; 
  101.  IF ANZ_GENOMM>_[43] THEN _[43]:=ANZ_GENOMM;    _[58]:=_[58]+1; 
  102.  IF I<_[59] THEN _[59]:=I;  IF I>_[60] THEN _[60]:=I;  ; 
  103. WRITELN('.  Summe = ',SUMME);   _[44]:=_[44]+1; 
  104.  IF SUMME<_[45] THEN _[45]:=SUMME;  IF SUMME>_[46] THEN _[46]:=SUMME;  ; 
  105. WRITELN  ; 
  106. FOR I:=1 TO ANZAHL_GOLDSTUECKE DO BEGIN _[66] := _[66] + 1 ;  
  107. GOLDSTUECKE[I]:=UEBRIGE[I];   _[39]:=_[39]+1;    _[58]:=_[58]+1; 
  108.  IF I<_[59] THEN _[59]:=I;  IF I>_[60] THEN _[60]:=I;    _[1]:=_[1]+1;  END ; 
  109.    _[2]:=_[2]+1;  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  110.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;    _[58]:=_[58]+1; 
  111.  IF I<_[59] THEN _[59]:=I;  IF I>_[60] THEN _[60]:=I;  ; 
  112.  ;IF _2[3] > _[57] THEN _[57] := _2[3]; _2[3]:=_2[3]-1; END ;
  113. BEGIN _[37] := _[37] + 1 ;  _2[4] := _2[4] + 1 ; 
  114. ZAHL:=UEBRIGE[STELLE];   _[47]:=_[47]+1;  IF STELLE<_[48] THEN _[48]:=STELLE; 
  115.  IF STELLE>_[49] THEN _[49]:=STELLE;    _[39]:=_[39]+1;    _[53]:=_[53]+1; 
  116.  IF ZAHL<_[54] THEN _[54]:=ZAHL;  IF ZAHL>_[55] THEN _[55]:=ZAHL;  ; 
  117. IF NOT(ERGEBNISS_GEFUNDEN)THEN BEGIN _[67] := _[67] + 1 ; 
  118. SUMME:=SUMME+ZAHL;   _[53]:=_[53]+1;  IF ZAHL<_[54] THEN _[54]:=ZAHL; 
  119.  IF ZAHL>_[55] THEN _[55]:=ZAHL;    _[44]:=_[44]+1; 
  120.  IF SUMME<_[45] THEN _[45]:=SUMME;  IF SUMME>_[46] THEN _[46]:=SUMME;  ; 
  121. IF SUMME<=JEDER_ERBT THEN BEGIN _[68] := _[68] + 1 ; 
  122. UEBRIGE[STELLE]:=0;   _[47]:=_[47]+1;  IF STELLE<_[48] THEN _[48]:=STELLE; 
  123.  IF STELLE>_[49] THEN _[49]:=STELLE;    _[39]:=_[39]+1;  ; 
  124. ANZ_GENOMM:=ANZ_GENOMM+1;   _[41]:=_[41]+1; 
  125.  IF ANZ_GENOMM<_[42] THEN _[42]:=ANZ_GENOMM; 
  126.  IF ANZ_GENOMM>_[43] THEN _[43]:=ANZ_GENOMM;  ; 
  127. GENOMMENE[ANZ_GENOMM]:=ZAHL;   _[53]:=_[53]+1; 
  128.  IF ZAHL<_[54] THEN _[54]:=ZAHL;  IF ZAHL>_[55] THEN _[55]:=ZAHL; 
  129.    _[41]:=_[41]+1;  IF ANZ_GENOMM<_[42] THEN _[42]:=ANZ_GENOMM; 
  130.  IF ANZ_GENOMM>_[43] THEN _[43]:=ANZ_GENOMM;    _[40]:=_[40]+1;  ; 
  131. IF SUMME<JEDER_ERBT THEN BEGIN _[69] := _[69] + 1 ; 
  132. FOR I:=STELLE+1 TO ANZAHL_GOLDSTUECKE DO BEGIN _[70] := _[70] + 1 ;  
  133. IF UEBRIGE[I]>0 THEN BEGIN _[71] := _[71] + 1 ;  
  134. TESTE(UEBRIGE,GENOMMENE,ANZ_GENOMM,SUMME,I);   _[50]:=_[50]+1; 
  135.  IF I<_[51] THEN _[51]:=I;  IF I>_[52] THEN _[52]:=I;    _[44]:=_[44]+1; 
  136.  IF SUMME<_[45] THEN _[45]:=SUMME;  IF SUMME>_[46] THEN _[46]:=SUMME; 
  137.    _[41]:=_[41]+1;  IF ANZ_GENOMM<_[42] THEN _[42]:=ANZ_GENOMM; 
  138.  IF ANZ_GENOMM>_[43] THEN _[43]:=ANZ_GENOMM;    _[40]:=_[40]+1; 
  139.    _[39]:=_[39]+1;  END  ; 
  140. ;   _[50]:=_[50]+1;  IF I<_[51] THEN _[51]:=I;  IF I>_[52] THEN _[52]:=I; 
  141.    _[39]:=_[39]+1; END ;    _[2]:=_[2]+1; 
  142.  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  143.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;    _[47]:=_[47]+1; 
  144.  IF STELLE<_[48] THEN _[48]:=STELLE;  IF STELLE>_[49] THEN _[49]:=STELLE; 
  145.    _[50]:=_[50]+1;  IF I<_[51] THEN _[51]:=I;  IF I>_[52] THEN _[52]:=I; 
  146.  END  ELSE BEGIN _[72] := _[72] + 1 ;  
  147. ERGEBNISS_GEFUNDEN:=TRUE;   _[26]:=_[26]+1;  ; 
  148. AUSGABE  ;
  149.  END;   _[20]:=_[20]+1;  IF JEDER_ERBT<_[21] THEN _[21]:=JEDER_ERBT; 
  150.  IF JEDER_ERBT>_[22] THEN _[22]:=JEDER_ERBT;    _[44]:=_[44]+1; 
  151.  IF SUMME<_[45] THEN _[45]:=SUMME;  IF SUMME>_[46] THEN _[46]:=SUMME;  ; 
  152.  END  ; 
  153. ;   _[20]:=_[20]+1;  IF JEDER_ERBT<_[21] THEN _[21]:=JEDER_ERBT; 
  154.  IF JEDER_ERBT>_[22] THEN _[22]:=JEDER_ERBT;    _[44]:=_[44]+1; 
  155.  IF SUMME<_[45] THEN _[45]:=SUMME;  IF SUMME>_[46] THEN _[46]:=SUMME; END  ; 
  156. ;   _[26]:=_[26]+1;
  157.  ;IF _2[4] > _[38] THEN _[38] := _2[4]; _2[4]:=_2[4]-1; END ;
  158. BEGIN _[12] := _[12] + 1 ;  _2[5] := _2[5] + 1 ;  
  159. IF ERMITTLE_DURCHSCHNITTL_ERBE=INT(ERMITTLE_DURCHSCHNITTL_ERBE)
  160. THEN BEGIN _[73] := _[73] + 1 ;  
  161. JEDER_ERBT:=ROUND(ERMITTLE_DURCHSCHNITTL_ERBE);   _[20]:=_[20]+1; 
  162.  IF JEDER_ERBT<_[21] THEN _[21]:=JEDER_ERBT; 
  163.  IF JEDER_ERBT>_[22] THEN _[22]:=JEDER_ERBT;  ; 
  164. AKT_ERBE:=0;   _[23]:=_[23]+1;  IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE; 
  165.  IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE;  ; 
  166. REPEAT _[74] := _[74] + 1 ; 
  167. AKT_ERBE:=AKT_ERBE+1;   _[23]:=_[23]+1; 
  168.  IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE; 
  169.  IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE;  ; 
  170. ERGEBNISS_GEFUNDEN:=FALSE;   _[26]:=_[26]+1; ; 
  171. U:=0;   _[17]:=_[17]+1;  IF U<_[18] THEN _[18]:=U;  IF U>_[19] THEN _[19]:=U; 
  172.  ; 
  173. FOR I:=1 TO ANZAHL_GOLDSTUECKE DO BEGIN _[75] := _[75] + 1 ;  
  174. U:=U+GOLDSTUECKE[I];   _[14]:=_[14]+1;  IF I<_[15] THEN _[15]:=I; 
  175.  IF I>_[16] THEN _[16]:=I;    _[1]:=_[1]+1;    _[17]:=_[17]+1; 
  176.  IF U<_[18] THEN _[18]:=U;  IF U>_[19] THEN _[19]:=U;  END ;    _[2]:=_[2]+1; 
  177.  IF ANZAHL_GOLDSTUECKE<_[3] THEN _[3]:=ANZAHL_GOLDSTUECKE; 
  178.  IF ANZAHL_GOLDSTUECKE>_[4] THEN _[4]:=ANZAHL_GOLDSTUECKE;    _[14]:=_[14]+1; 
  179.  IF I<_[15] THEN _[15]:=I;  IF I>_[16] THEN _[16]:=I;  ; 
  180. IF U>=JEDER_ERBT THEN BEGIN _[76] := _[76] + 1 ; 
  181. I:=0;   _[14]:=_[14]+1;  IF I<_[15] THEN _[15]:=I;  IF I>_[16] THEN _[16]:=I;
  182.  ; 
  183. REPEAT _[77] := _[77] + 1 ; 
  184. I:=I+1;   _[14]:=_[14]+1;  IF I<_[15] THEN _[15]:=I; 
  185.  IF I>_[16] THEN _[16]:=I;  ; 
  186.  UNTIL GOLDSTUECKE[I]>0;   _[14]:=_[14]+1;  IF I<_[15] THEN _[15]:=I; 
  187.  IF I>_[16] THEN _[16]:=I;    _[1]:=_[1]+1;  ; 
  188. TESTE(GOLDSTUECKE,HILFSARRAY,0,0,I);   _[14]:=_[14]+1; 
  189.  IF I<_[15] THEN _[15]:=I;  IF I>_[16] THEN _[16]:=I;    _[27]:=_[27]+1; 
  190.    _[1]:=_[1]+1;  ; 
  191.  END  ; 
  192. ;   _[20]:=_[20]+1;  IF JEDER_ERBT<_[21] THEN _[21]:=JEDER_ERBT; 
  193.  IF JEDER_ERBT>_[22] THEN _[22]:=JEDER_ERBT;    _[17]:=_[17]+1; 
  194.  IF U<_[18] THEN _[18]:=U;  IF U>_[19] THEN _[19]:=U; UNTIL(ERGEBNISS_GEFUNDEN
  195. =FALSE)OR(AKT_ERBE=ANZAHL_ERBEN);   _[5]:=_[5]+1; 
  196.  IF ANZAHL_ERBEN<_[6] THEN _[6]:=ANZAHL_ERBEN; 
  197.  IF ANZAHL_ERBEN>_[7] THEN _[7]:=ANZAHL_ERBEN;    _[23]:=_[23]+1; 
  198.  IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE; 
  199.  IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE;    _[26]:=_[26]+1;  ; 
  200. IF ERGEBNISS_GEFUNDEN=FALSE THEN BEGIN _[78] := _[78] + 1 ;  
  201. WRITELN  ; WRITE(' Erbe Nr. ',AKT_ERBE,' würde nicht das richtige ');
  202.    _[23]:=_[23]+1;  IF AKT_ERBE<_[24] THEN _[24]:=AKT_ERBE; 
  203.  IF AKT_ERBE>_[25] THEN _[25]:=AKT_ERBE;  ; 
  204. WRITE('Erbe erhalten. Es erbt das Kloster. ') ;
  205.  END  ; 
  206. ;   _[26]:=_[26]+1; 
  207.  END  ELSE BEGIN _[79] := _[79] + 1 ;  
  208. WRITELN  ; WRITELN(' Eine Aufteilung geht nicht. Das Kloster erbt. ') ;
  209.  END  ; 
  210.  ;IF _2[5] > _[13] THEN _[13] := _2[5]; _2[5]:=_2[5]-1; END ;
  211. BEGIN FOR __:= 1 TO ___ DO _[__]:=0;  FOR __:= 1 TO ___2 DO _2[__]:=-1;  
  212. _[3]:=1.9E+999;_[4]:=-1.9E+999;_[6]:=1.9E+999;_[7]:=-1.9E+999; 
  213. _[15]:=1.9E+999;_[16]:=-1.9E+999;_[18]:=1.9E+999;_[19]:=-1.9E+999; 
  214. _[21]:=1.9E+999;_[22]:=-1.9E+999;_[24]:=1.9E+999;_[25]:=-1.9E+999; 
  215. _[31]:=1.9E+999;_[32]:=-1.9E+999;_[34]:=1.9E+999;_[35]:=-1.9E+999; 
  216. _[42]:=1.9E+999;_[43]:=-1.9E+999;_[45]:=1.9E+999;_[46]:=-1.9E+999; 
  217. _[48]:=1.9E+999;_[49]:=-1.9E+999;_[51]:=1.9E+999;_[52]:=-1.9E+999; 
  218. _[54]:=1.9E+999;_[55]:=-1.9E+999;_[59]:=1.9E+999;_[60]:=-1.9E+999; 
  219. _[62]:=1.9E+999;_[63]:=-1.9E+999;
  220. EINGABE  ; 
  221. AUFTEILUNG  ; 
  222. ;ASSIGN(_f,'A:\TESTFILE.TST\TALER.WRT');
  223. REWRITE(_f);
  224. WRITELN(_f,'(c)1989mkbmeersaukleintier');
  225. WRITELN(_f,'A:\DEMOS.PAS\TALER.PAS');
  226. WRITELN(_f,'ja');
  227. WRITELN(_f,'79.0');
  228. FOR __ := 1 TO ___ DO BEGIN 
  229. STR(_[__],_h);
  230. WRITELN(_f,_h); END;
  231. CLOSE(_f);
  232. WRITELN;WRITELN;
  233. WRITELN('-> Profile-Testlauf beendet. Werte in A:\TESTFILE.TST\TALER.WRT');
  234. WRITELN('-> Bitte profile_2.prg starten. ');
  235. END.
  236.